package theWorld.AndroidHackathon.Kyoto;

import android.app.Activity;
import android.os.Bundle;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import android.view.Window;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import theWorld.AndroidHackathon.Kyoto.TextureDrawer;

import java.util.Random;

/**
 * ※このクラスは未使用 
 *
 */
/**
 * Activity, GLSurfaceView.Renderer?ｽ?ｽ?ｽp?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽN?ｽ?ｽ?ｽX
 */
public class TextureSample extends Activity implements GLSurfaceView.Renderer
{
    // GLSurfaceView
    private GLSurfaceView gLSurfaceView;

    // ?ｽﾇみ搾ｿｽ?ｽ?ｾテ?ｽN?ｽX?ｽ`?ｽ?ｽ?ｽ?ｽID
    private int texID;
    
    // ?ｽe?ｽX?ｽg?ｽp?ｽﾏ撰ｿｽ
    public float size;	//?ｽT?ｽC?ｽY
    public float fistX;
    public float fistY;

    /**
     * @Override ?ｽA?ｽN?ｽe?ｽB?ｽr?ｽe?ｽB?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽﾉ呼び出?ｽ?ｽ?ｽ?ｽ?ｽ
     */
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // ?ｽ^?ｽC?ｽg?ｽ?ｽ?ｽo?ｽ[?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // GLSurfaceView ?ｽ?ｶ撰ｿｽ
        gLSurfaceView = new GLSurfaceView(this);
        // ?ｽ?ｽ?ｽ?ｽ?ｽ_?ｽ?ｽ?ｽ[?ｽ?ｶ撰ｿｽ?ｽ?ｽ?ｽﾄセ?ｽb?ｽg
        gLSurfaceView.setRenderer(this);

        // ?ｽ?ｽ?ｽC?ｽA?ｽE?ｽg?ｽﾌ?ｿｽ?ｽ\?ｽ[?ｽX?ｽQ?ｽﾆは渡?ｽ?ｽ?ｽ?ｽ?ｽA?ｽ?ｽ?ｽ?ｽView?ｽI?ｽu?ｽW?ｽF?ｽN?ｽg?ｽ?ｽn?ｽ?ｽ
        // setContentView(R.layout.main);
        setContentView(gLSurfaceView);

        // ?ｽ?ｽ?ｽ?ｽ?ｽo?ｽﾌ擾ｿｽ?ｽ?ｽ
        texID = -1;
        
        // ?ｽe?ｽX?ｽg?ｽp?ｽﾏ撰ｿｽ?ｽﾌ擾ｿｽ?ｽ?ｽ
        size = 0.8f;
        fistX = 160.0f;
        fistY = 240.0f;
    }

    /**
     * @Override ?ｽ`?ｽ?ｽﾌゑｿｽ?ｽﾟに厄ｿｽ?ｽt?ｽ?ｽ?ｽ[?ｽ?ｽ?ｽﾄび出?ｽ?ｽ?ｽ?ｽ?ｽ
     */
    public void onDrawFrame(GL10 gl)
    {
        // ?ｽ`?ｽ?ｽp?ｽo?ｽb?ｽt?ｽ@?ｽ?ｽ?ｽN?ｽ?ｽ?ｽA
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

        // ?ｽ|?ｽ?ｽ?ｽS?ｽ?ｽ?ｽﾌ描?ｽ諠?ｿｽ\?ｽb?ｽh?ｽ?ｽ?ｽﾄゑｿｽ
        if (size > 0.7){
        TextureDrawer.drawTexture(
            gl, texID, fistX, fistY, 128, 128, 30.0f, size, size);
        }
        size += 0.05f;
        if(size>1.0f){
        	size = 0.0f;
        	Random rnd = new Random();
        	fistX = rnd.nextInt(320);
        	fistY = rnd.nextInt(480);
        }
    }

    /**
     * @Override ?ｽT?ｽ[?ｽt?ｽF?ｽC?ｽX?ｽﾌサ?ｽC?ｽY?ｽﾏ更?ｽ?ｽ?ｽﾉ呼び出?ｽ?ｽ?ｽ?ｽ?ｽ
     * @param gl
     * @param width ?ｽﾏ更?ｽ?ｽﾌ包ｿｽ
     * @param height ?ｽﾏ更?ｽ?ｽﾌ搾ｿｽ?ｽ?ｽ
     */
    public void onSurfaceChanged(GL10 gl, int width, int height)
    {
        // ?ｽr?ｽ?ｽ?ｽ[?ｽ|?ｽ[?ｽg?ｽ?ｽ?ｽT?ｽC?ｽY?ｽﾉ搾ｿｽ?ｽ?ｹ?ｽﾄセ?ｽb?ｽg?ｽ?ｽ?ｽﾈゑｿｽ?ｽ?ｽ
        gl.glViewport(0, 0, width, height);

        // ?ｽﾋ影?ｽs?ｽ?ｽ?ｽI?ｽ?ｽ
        gl.glMatrixMode(GL10.GL_PROJECTION);
        // ?ｽ?ｽ?ｽﾝ選?ｽ?ｽ?ｽ?ｽ?ｽ?ｽﾄゑｿｽ?ｽ?ｽs?ｽ?ｽ(?ｽﾋ影?ｽs?ｽ?ｽ)?ｽﾉ、?ｽP?ｽﾊ行?ｽ?ｽ?ｽ?ｽZ?ｽb?ｽg
        gl.glLoadIdentity();
        // ?ｽ?ｽ?ｽs?ｽ?ｽ?ｽe?ｽp?ｽﾌパ?ｽ?ｽ?ｽ?ｽ?ｽ[?ｽ^?ｽ?ｽ?ｽZ?ｽb?ｽg
        GLU.gluOrtho2D(gl, 0.0f, width, 0.0f, height);
    }

    /**
     * @Override ?ｽT?ｽ[?ｽt?ｽF?ｽC?ｽX?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽﾛ・?ｽﾜゑｿｽ?ｽﾍ再撰ｿｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽﾛに呼び出?ｽ?ｽ?ｽ?ｽ?ｽ
     */
    public void onSurfaceCreated(GL10 gl, EGLConfig config)
    {
        // ?ｽf?ｽB?ｽU?ｽ?ｳ鯉ｿｽ
        gl.glDisable(GL10.GL_DITHER);
        // ?ｽJ?ｽ?ｽ?ｽ[?ｽﾆテ?ｽN?ｽX?ｽ`?ｽ?ｽ?ｽ?ｽ?ｽW?ｽﾌ包ｿｽﾔ撰ｿｽ?ｽx?ｽ?ｽ?ｽA?ｽﾅゑｿｽ?ｽ?ｽI?ｽﾈゑｿｽ?ｽﾌに指?ｽ?ｽ
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);

        // ?ｽo?ｽb?ｽt?ｽ@?ｽ?ｽ?ｽ?ｽ?ｽﾌカ?ｽ?ｽ?ｽ[?ｽ?ｽ?ｽ?ｽ?ｽZ?ｽb?ｽg
        gl.glClearColor(0, 0, 0, 1);

        // ?ｽﾐ面表?ｽ?ｽ?ｽ?ｽL?ｽ?ｽ?ｽ
        gl.glEnable(GL10.GL_CULL_FACE);
        // ?ｽJ?ｽ?ｽ?ｽ?ｽ?ｽO?ｽﾝ抵ｿｽ?ｽCCW?ｽ?ｽ
        gl.glFrontFace(GL10.GL_CCW);

        // ?ｽ[?ｽx?ｽe?ｽX?ｽg?ｽ?ｳ鯉ｿｽ?ｽ
        gl.glDisable(GL10.GL_DEPTH_TEST);

        // ?ｽt?ｽ?ｽ?ｽb?ｽg?ｽV?ｽF?ｽ[?ｽf?ｽB?ｽ?ｽ?ｽO?ｽﾉセ?ｽb?ｽg
        gl.glShadeModel(GL10.GL_FLAT);

        // ?ｽ?ｽ?ｽ\?ｽ[?ｽX?ｽﾇみ搾ｿｽ?ｽ?ｽ
        texID = TextureLoader.loadTexture(gl, this, R.drawable.star_fist);
    }

    /**
     * @Override ?ｽ|?ｽ[?ｽY?ｽ?ｽﾔゑｿｽ?ｽ?ｽﾌ包ｿｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽA?ｽA?ｽN?ｽe?ｽB?ｽr?ｽe?ｽB?ｽ?ｽ?ｽ?ｽ?ｽ?ｽ?ｽﾈどに呼び出?ｽ?ｽ?ｽ?ｽ?ｽ
     */
    protected void onResume()
    {
        super.onResume();
        gLSurfaceView.onResume();
    }

    /**
     * @Override ?ｽA?ｽN?ｽe?ｽB?ｽr?ｽe?ｽB?ｽ齊橸ｿｽ?ｽ~?ｽ?ｽ?ｽ?ｽA?ｽI?ｽ?ｽ?ｽ?ｽ?ｽﾉ呼び出?ｽ?ｽ?ｽ?ｽ?ｽ
     */
    protected void onPause()
    {
        super.onPause();
        gLSurfaceView.onPause();
    }
}
